<?php
class IOSocial{
	
	// - ID Приложения
	protected $app_id;
	// - Api key
	protected $api_key;
	// - Api Secret Key
	protected $api_secret_key;
	// - Формат
	protected $api_format = "JSON";
	// - Параметры запрос
	protected $request = Array();
	// - Время хронения данных в мемкеше (сек).
	protected $expire_time = 7200;
	// - Использовать секьюрный метод авторизации
	protected $secure = 0;
	// - ПАраметры для отправки запроса
	protected $hostData = Array();
	// - Настройки
	protected $settings = Array();
	// - Конвертор интерфейса запроса 
	protected $interface = Array();
	
	protected function __construct($api = Array()){
	
	}
	
	
	public function checkAuthorization(){}
	
	
	protected function extractHostData($url){
		list($protocol, $url) = explode('://', $url);
		list($host, $page) = explode("/",$url);
		$url=Array("protocol"=>$protocol,"host"=>$host,"page"=>"/".$page);
		return $url;
	}
	
	/**
	* Метод генерирования сигнатуры запроса
	*/
	protected function genSignature(){}
	
	
	
/* ---- Методы ----
*  VK
*/
	
	/**
	* Сохраняет строку статуса приложения для его последующего вывода в общем списке 
	* приложений на странице пользователя. Размер строки статуса ограничен 32 символами. 
	* Only VK +
	*/
	public function saveAppStatus($uid, $status){}
	/**
	* Возвращает строку статуса приложения, сохраненного с помощью метода 
	* Only Vk
	*/
	public function getAppStatus(){}
	/**
	* secure.addRating
	* Поднимает пользователю рейтинг от имени приложения.
	* За каждый добавленный балл рейтинга с баланса приложения списывается 0.6 голоса.
	* Если за раз добавляется от 100 баллов и выше, с баланса приложения списывается 0.5 голоса за каждый балл. 
	*/
	public function addRating($uid, $rate, $message = null){}
	
	/**
	* secure.setCounter
	* Устанавливает счетчик, который выводится пользователю жирным шрифтом в левом меню. 
	* Это происходит только в том случае, если пользователь добавил приложение в левое меню со страницы 
	* приложения, списка приложений или настроек. Результат: 
	* @param mixed $uid
	* @param mixed $count
	* Only Vk +
	*/
	public function setCounter( $uid, $count ){}
	
	/**
	* Возвращает платежный баланс (счет) приложения в сотых долях голоса.
	* only VK +
	*/
	public function getBalance( $uid ){}
	
	/**
	* Списывает голоса со счета пользователя на счет приложения (в сотых долях). 
	* http://vkontakte.ru/developers.php?o=-1&p=secure.withdrawVotes
	* Only VK +
	*/
	public function withdrawVotes( $uid, $votes ){}
	/**
	* Выводит историю транзакций по переводу голосов между пользователями и приложением.
	* http://vkontakte.ru/developers.php?o=-1&p=secure.getTransactionsHistory
	*/
	public function getTransactionsHistory(){}
/* Общие методы */
	/*
	* Список друзей 
	* VK +
	* Mail +
	*/
	public function getFriends( $uid ){}
	/*
	* Списко друзей установивших приложение
	*/
	public function getAppFriends(){}
	/*
	* Профиль пользователя 
	* VK+
	* Mail +
	*/
	public function getProfile($uids){}	
	/**
	* Отправляет уведомление пользователю.
	* VK + 
	* Mail +
	*/
	public function Notification($uids = Array(), $message ){}
	
/* Методы MyMail */
	/*
	* Установить виджет
	*/
	public function setWidget(){}
	/*
	*  Открыть диалдог
	* - Устарел
	*/
	public function openDialog(){}
	
	
/* Метод оправки Запросов clsHtmlSource.php*/
	protected function getApiRequest( $expir = 600){}

	function _objectToArray($par){
		if(is_array($par) || is_object($par)){
			foreach($par as $k => $v){
				if(is_object($v)){
					$n[$this->convertInterface($k)]=$this->_objectToArray($v);
				}else if(is_array($v)){
					$n[$this->convertInterface($k)]=$this->_objectToArray($v);
				}else {
					$n[$this->convertInterface($k)]=$v;
				}
			}
			return $n;
		}else{
			return $par;
		}

	}
	function convertInterface($key){
		if(isset($this->interface[$key])){
			return $this->interface[$key];
		}else{
			return $key;
		}
	}
	function generateMCKey($reqParam){
		$key = md5(implode("Api::",$reqParam));
		return $key;
	}

}
?>
